package upe.mestrado.operadores.cruzamento;

import java.util.Random;

import upe.mestrado.base.Individuo;
import upe.mestrado.base.OperadorCruzamento;

public class CruzamentoUmPonto implements OperadorCruzamento {

	@Override
	public Individuo[] executar(Individuo... individuos) {
		Individuo pai1 = individuos[0];
		Individuo pai2 = individuos[1];
		
		double[] gene1 = pai1.getGene();
		double[] gene2 = pai2.getGene();
		
		Random random = new Random();
		int pontoDivisor = random.nextInt(pai1.getGene().length);
		
		for (int i = 0; i < gene1.length; i++) {
			if(i > pontoDivisor){
				gene2[i] = pai1.getGene()[i];
				gene1[i] = pai2.getGene()[i];
			}
		}
		
		Individuo[] filhos = new Individuo[2];
		filhos[0] = new Individuo(gene1);
		filhos[1] = new Individuo(gene2);
		
		return filhos;
	}

}
